relation-queries {prisma}
include
⇒ 릴레이션을 선택만 하기 위한 간단한 옵션.
select
⇒ 네스팅이 가능한 복합적인 옵션. 이름처럼 특정한 필드만을 선택하기 위해 사용된다.
아래는 Chat GPT 4.5가 작성해준 초안
Prisma Relation Queries에 대한 가이드
Prisma는 데이터베이스 쿼리에서 관계 데이터를 손쉽게 다룰 수 있도록 두 가지 핵심 옵션인 include
와 select
를 제공합니다. 이 문서에서는 두 옵션의 사용법과 유스케이스, 그리고 권장되는 베스트 프랙티스를 소개합니다.
1. include
include
는 Prisma에서 관계된 데이터를 간단하게 가져올 때 사용하는 옵션입니다. 별도의 복잡한 필터링 없이 관련된 모든 필드를 한 번에 불러오는 용도로 적합합니다.
사용 예시
const userWithPosts = await prisma.user.findUnique({
where: { id: 1 },
include: { posts: true },
});
유스케이스
- 사용자 프로필과 그 사용자의 모든 게시글을 한 번에 가져올 때.
- 주문과 함께 주문된 모든 제품 목록을 한 번에 가져올 때.
베스트 프랙티스
- 데이터가 적고 간단한 관계일 때 주로 사용합니다.
- 필요한 필드가 명확하게 정해지지 않았을 때 빠르게 구현할 수 있습니다.
2. select
select
는 특정 필드만 선택하여 가져오거나, 네스팅하여 복잡한 관계 데이터를 정교하게 관리할 수 있도록 도와줍니다.
사용 예시
const userSelectiveData = await prisma.user.findUnique({
where: { id: 1 },
select: {
name: true,
email: true,
posts: {
select: {
title: true,
publishedAt: true,
},
},
},
});
유스케이스
- 클라이언트에 최소한의 필드만 전달하여 네트워크 효율성을 극대화할 때.
- 민감한 데이터를 제외하고 안전하게 정보를 전달할 때.
- 성능 최적화를 위해 데이터베이스의 불필요한 필드 접근을 최소화할 때.
베스트 프랙티스
- 관계 데이터가 복잡하고 필드가 많은 경우 적극적으로 활용하세요.
- 항상 필요한 최소 필드만 선택하여 성능과 보안을 모두 고려하세요.
- API 응답에 최적화된 형태로 데이터를 제공할 때 효과적입니다.
결론
- 간단한 관계 데이터 →
include
- 복잡하고 정교한 필드 선택 →
select
두 옵션을 적절히 사용하여 데이터 처리 성능을 극대화하고, 유지보수성을 높이세요.